-*- mode: org -*-

* Changes in 0.5.2 (since 0.5.1.1)

** User visible changes

*** New commands

**** M-x guix-lint-checkers
**** M-x guix-hidden-packages

*** Removed commands

**** M-x guix-newest-packages

"M-x guix-all-packages" should be used instead.

*** Changed commands

**** M-x guix-package-lint

It asks for multiple packages now.

*** Profile List

It displays all profiles that have gc roots (similarly to
"guix package --list-profiles" shell command) now.

* Changes in 0.5.1.1 (since 0.5.1)

This is a bug-fix release: "M-x guix", introduced by the previous
release, failed after pressing "p" or "P" because of a missing
requirement in "guix-popup.el".  This is fixed in this release (commit
d7b54784bc3962570519aac472f54598c10299ae).

* Changes in 0.5.1 (since 0.5)

** User visible changes

*** "M-x guix" — new popup interface for Emacs-Guix commands

The old "M-x guix" (interface for guix shell commands) is renamed to
"M-x guix-command" (also it is one of the sub-popups of the new "M-x
guix" now).

*** New commands

**** M-x guix-set-emacs-environment
**** M-x guix-current-profile

*** Store Item List

New key binding — "z": display a total size of the marked store items.

*** New variables

- guix-file-size-string-function
- guix-store-item-show-total-size

** Internal changes

*** Renamed variables

- guix-default-profile -> guix-default-user-profile

*** New variables

- guix-default-pulled-profile

* Changes in 0.5 (since 0.4.1.1)

** User visible changes

*** New commands

**** M-x guix-store-item
**** M-x guix-store-item-referrers
**** M-x guix-store-item-references
**** M-x guix-store-item-requisites
**** M-x guix-store-item-derivers
**** M-x guix-store-failures
**** M-x guix-store-live-items
**** M-x guix-store-dead-items

*** Interface for Hydra removed

It was extracted into a stand-alone "Emacs-Build-Farm" package.

** Internal changes

*** New variables

- guix-ask-before-buffer-update
- guix-geiser-connection-timeout

* Changes in 0.4.1.1 (since 0.4.1)

This is a bug-fix release: earlier version of "guix pull" command put
".go" files into the same directory as ".scm", but now they are placed
in different directories.  This change is supported by this release.  It
is a crucial change, as incompatibility between .scm and .go files may
lead to unpredictable errors.

* Changes in 0.4.1 (since 0.4)

The main purpose of this release is to support the new behaviour of
"guix pull" command, which now makes a full-featured profile
[[~/.config/guix/current]] instead of just building the latest guix modules
and putting them into [[~/.config/guix/latest]] directory.

** User visible changes

*** New commands

**** M-x guix-system-from-file
**** M-x guix-system-profile

*** Changed commands

**** M-x guix-dependent-packages

It asks for dependency type now: "all" or "direct".

*** Profile List

The new profile populated by "guix pull" is displayed by "M-x
guix-profiles" now.

*** Renamed variables

guix-hash-support-dired -> guix-support-dired

** Internal changes

*** New variables

- guix-pulled-profile

* Changes in 0.4 (since 0.3.4)

** User visible changes

*** New commands

**** M-x guix-all-services
**** M-x guix-default-services
**** M-x guix-services-by-name
**** M-x guix-services-by-regexp
**** M-x guix-services-by-location
**** M-x guix-service-locations
**** M-x guix-find-service-definition
**** M-x guix-find-service-location-file
**** M-x guix-find-license-location-file
**** M-x guix-dependent-packages
**** M-x guix-number-of-packages
**** M-x guix-report-bug

*** Renamed commands

**** M-x guix-all-available-packages -> guix-all-packages
**** M-x guix-newest-available-packages -> guix-newest-packages
**** M-x guix-find-location -> guix-find-package-location-file
**** M-x guix-locations -> guix-package-locations
**** M-x guix-edit -> guix-find-package-definition

'guix-edit' still exists as an alias for 'guix-find-package-definition'
and it is not going to be removed.

*** guix-devel-mode

**** Possibility to edit synopsis/description in texinfo-mode

The new 'guix-devel-code-block-edit' command that allows you to do this
is bound to "C-c . '".

**** Possibility to find package patch file at point

To activate it, use:

(add-to-list 'ffap-alist '("\\.patch" . guix-devel-ffap-patch))

*** guix-env-var-mode

It prettifies "/tmp/guix-build-*-*.drv-*/environment-variables" and
"etc/profile" files.

** Internal changes

*** New faces

- guix-hydra-build-status-unknown
- guix-location

'guix-package-info-location' face is removed (superseded by
'guix-location').

*** New variables

Not counting the huge amount of variables for the new service interface.

- guix-package-names-use-duplicates
- guix-hydra-number-of-builds
- guix-hydra-urls
- guix-repl-max-returned-list-size

*** Performance improvements

Big portions of Guile data are passed to the Elisp side not through
Geiser, but through a temporary file.  This makes Emacs-Guix faster and
more reliable.  See commit 00c87a9cafa3d74840be02efa2516286515b6f93 for
details.

*** Requirements

New requirement: "edit-indirect.el" library.

* Changes in 0.3.4 (since 0.3.3)

** User visible changes

*** New commands

**** M-x guix-hash

**** M-x guix-superseded-packages

**** M-x guix-derivation-mode
It is enabled automatically in "/gnu/store/….drv" files.

**** M-x guix-scheme-mode
It is enabled automatically in various Guile files from the store (for
example, "/gnu/store/…-activate-service" or "/gnu/store/…-shepherd.conf").

*** Package List

Along with "obsolete" packages, names of "superseded", "unknown" and
"future" packages are also highlighted.

** Internal changes

*** New faces

- guix-derivation-file-name;
- guix-derivation-drv-file-name;
- guix-package-info-unknown;
- guix-package-info-future;
- guix-package-info-superseded;
- guix-package-list-unknown;
- guix-package-list-future;
- guix-package-list-superseded.

*** New variables

- guix-derivation-file-regexp;
- guix-derivation-file-regexp-group;
- guix-derivation-file-name-faces;
- guix-read-package-name-function;
- guix-hash-regexp;
- guix-default-hash-format;
- guix-default-key-policy;
- guix-default-elpa-archive;
- guix-default-size-sort-key;
- guix-default-search-paths-type;
- guix-default-graph-backend;
- guix-default-graph-node-type.

** Bug fixes

*** UUIDs are handled properly by System Generation Info

Previously "M-x guix-system-generations" followed by "i" failed if store
devices were specified by UUIDs in a system configuration.

* Changes in 0.3.3 (since 0.3.2)

** User visible changes

*** Profile List

New key bindings:

- "E": show 'search paths';
- "RET": show "Profile Info".

*** Profile Info

New interface.

*** Generation Info

New "Profile" and "Search paths" buttons.

*** Generation List

New key bindings:

- "E": show 'search paths';

** Internal changes

*** New faces

- 'guix-true';
- 'guix-faces'.

This faces are parent for:

- 'guix-package-info-installed-outputs' and
  'guix-package-info-uninstalled-outputs',
- 'guix-generation-info-current' and 'guix-generation-info-not-current',
- 'guix-profile-info-current' and 'guix-profile-info-not-current' (faces
  for the new "Profile Info" interface).

** Bug fixes

*** Editing user packages honors relative file names

Previously, "M-x guix-edit" might not open custom packages (from
GUIX_PACKAGE_PATH) because it assumed the file names were absolute.  Now
relative file names are also handled.

* Changes in 0.3.2 (since 0.3.1)

** User visible changes

*** Package Info

New key bindings:

- "i", "d", "U": install, delete, upgrade;
- "G": show package graph;
- "z": show package size;
- "L": lint package.

*** System Generation Info

More information added (bootloader, direct link to a system file name).

* Changes in 0.3.1 (since 0.3)

** User visible changes

*** New commands

**** M-x guix-info
**** M-x guix-services-from-system-config-file

* Changes in 0.3 (since 0.2.2)

** User visible changes

*** New commands

**** M-x guix-packages-from-system-config-file
**** M-x guix-package-graph
**** M-x guix-package-size
**** M-x guix-lint
**** M-x guix-switch-to-buffer
**** M-x guix-extended-command

*** Package List

New key bindings:

- "G": show package graph;
- "z": show package size;
- "L": lint package.

*** Package Info

New buttons: "Graph", "Size", "Lint".

** Internal changes

*** Guix REPL is used for shell completions

Previously, when you pressed TAB to complete some guix shell command, an
according 'guix ... -h' shell command was called to get possible
completions from the help output.  Now this help output is received
through Guix REPL, which is faster.

*** Temporary files are placed in a sub-directory

Previously, temporary files (REPL socket and generated graph images)
were put directly in 'temporary-file-directory'.  Now they are placed in
"emacs-guix-..." sub-directory.

* Changes in 0.2.2 (since 0.2.1)

** User visible changes

*** Hints

Press "h" (or any unbound key) in any 'list' or 'info' buffer to display
a hint message (a summary of the available key bindings).

*** Generation List

- "D" key is removed (use "=" instead).

- "s" key is used for sorting (as in the other lists), not for setting
  current generation as before (use "c" instead).

*** Location List

"e" key can be used to go to the location file.

** Internal changes

*** "guix.scm" added

* Changes in 0.2.1 (since 0.2)

** User visible changes

*** New commands

**** M-x guix-about

*** Profile List

"Current" column is added (current profile for package commands).

*** M-x guix-help

"info" buttons (for the commands) are added.

*** M-x guix

"G" (graph) completes =--backend= option, and "v" (View graph) opens
html graph if the backend is "d3js".

* Changes in 0.2 (since Emacs-Guix was a part of Guix)

** User visible changes

*** New commands

**** M-x guix-help

**** M-x guix-profiles

*** "P" key to display packages

Previously, "RET" was used in various lists to display packages.  Now it
is not the case in lists of generations and licenses ("RET" is used to
display Info buffer), but "P" can be used anywhere (in lists of
generations, licenses, locations and profiles).

*** Package List

"C-u ^" marks all installed packages (even not obsolete) for upgrading.

*** Generation List

New column with a number of packages is added.

*** Generation Info

Several new parameters and buttons are added (especially in Info buffer
for system generations).

*** 'guix-build-log-minor-mode' is not activated by default

To activate it, use:

(add-hook 'shell-mode-hook 'guix-build-log-minor-mode)

*** 'guix-devel-mode' is not activated by default

To activate it, use:

(add-hook 'scheme-mode-hook 'guix-devel-mode)

*** New variables

- guix-repl-use-latest: defines whether or not to use "guix pull"-ed
  code (default is t).

*** Renamed variables

guix-use-guile-server           -> guix-repl-use-server
guix-after-start-repl-hook      -> guix-repl-after-start-hook
guix-after-repl-operation-hook  -> guix-repl-after-operation-hook
guix-before-repl-operation-hook -> guix-repl-before-operation-hook
guix-ui-update-after-operation  -> guix-update-buffers-after-operation

*** Renamed buffers

"List" part was removed from buffer names (*Guix Packages* instead of
*Guix Package List*, etc.)

** Internal changes

*** Guile code is split into multiple modules

Previously, there was a single "guix-main.scm" file with the code for
all the features.  Now there are several Guile modules which are loaded
on demand.  This improves the start time of the Guix REPL, especially
for those commands that do not require to load many Guix modules (like
"M-x guix-licenses").

*** Guile load path is augmented on the Emacs-Lisp side

Previously, there was "guix-helper.scm" file (generated by
"./configure") that set up the required load-path and loaded
"guix-main.scm".  Now this is done on the elisp side, which is more
versatile as it also allows to use Emacs-Guix from MELPA or from source
without additional configuration.

*** Renamed files

guix-backend.el  -> guix-repl.el
guix-base.el     -> guix-misc.el
guix-messages.el -> guix-ui-messages.el

*** Removed files

**** guix-buffer.el, guix-entry.el, guix-history.el, guix-info.el, guix-list.el

Now BUI library is used for list/info interfaces, so a big part of elisp
code was removed (the removed code was used as the base for BUI
library).

**** guix-emacs.el

This file stays in Guix as it is used in Emacs package recipe (it is
intended to autoload Emacs packages installed with Guix).

**** guix-init.el

It was deprecated in Guix since March 2016.

*** Requirements

Required Geiser version updated to 0.8.
New requirements: "bui.el" and "dash.el" libraries.
